package com.ynkbny.lgapi;

import com.alibaba.fastjson.JSONObject;
import com.dtflys.forest.annotation.*;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Service;

/**
 * 老狗平台——云南博可_接口
 * @Author YY
 * @Date 2023/7/28 15:15
 */
@Service
public interface YnBk {

    String URL = "https://export.bknykf.com/";

    /**
     * Login - 用户登录
     * @param username 用户名
     * @param password 密码
     * @param rememberMe 是否记住
     * @return {"code": "200","msg": "操作成功","data": "fe6386d550bd434b8cd994b58c3f8075"}
     */
    @Post("#{laoGouWeb.host}"+"#{laoGouWeb.login}")
    JSONObject login(@Body("username") String username, @Body("password") String password, @Body("rememberMe") boolean rememberMe);

    /**
     * 获取用能单位数据采集配置项信息表
     * @param proId 项目ID
     * @return json对象
     */
    @Post("#{laoGouWeb.host}"+"#{laoGouWeb.datacollectconfigure}")
    JSONObject getDataCollectConfigure(@Header("Cookie") String token, @Body("proId") Integer proId);

    /**
     * 智能抄表接口 (实测改接口不稳定，不建议使用)
     * @param token token
     * @param devId 设备ID
     * @param devName 设备名称
     * @param end 结束时间(毫秒时间戳)
     * @param flag 设备属性flag (实测可以传多个，逗号连接)
     * @param op1 时间步长(m、h、d) (实测似乎没用，可以不传)
     * @param op2 计算间隔(m10、m20、m30...)
     * @param start 开始时间(毫秒时间戳)
     * @return json对象
     */
    @Get("#{laoGouWeb.host}"+"#{laoGouWeb.meterReading}"+"?devId={devId}&devName={devName}&end={end}&flag={flag}&op1={op1}&op2={op2}&start={start}")
    JSONObject getData(@Header("Cookie") String token,
                                       @Var("devId") String devId,
                                       @Var("devName") String devName,
                                       @Var("end") String end,
                                       @Var("flag") String flag,
                                       @Var("op1") String op1,
                                       @Var("op2") String op2,
                                       @Var("start") String start);

    @Post(URL+"bkrega/list?uscCode={uscCode}")
    JSONObject getProjectData (@Header("Cookie") String token, @Var("uscCode") String enterpriseCode);

    /**
     * 获取项目分析数据
     * @param url url
     * @param token 登录后获取的token
     * @param projectId 项目ID
     * @param range 1：天；2：月；3：年
     * @param start 开始时间(毫秒时间戳)
     * @return JSONObject
     */
    @Post(url = "${url}", headers = {"__sid: ${token}"})
    JSONObject getProjectAnaPage(@Var("url") String url,
                                 @Var("token") String token,
                                 @Body("projectId") String projectId,
                                 @Body("range") String range,
                                 @Body("start") String start);

    /**
     * 获取设备分析数据
     * @param url url
     * @param token 登录后获取的token
     * @param deviceId 设备ID
     * @param range 1：天；2：月；3：年
     * @param start 开始时间(毫秒时间戳)
     * @return JSONObject
     */
    @Post(url = "${url}", headers = {"__sid: ${token}"})
    JSONObject getDeviceAnaPage(@Var("url") String url,
                                 @Var("token") String token,
                                 @Body("deviceId") String deviceId,
                                 @Body("range") String range,
                                 @Body("start") String start);


    /**
     * 从老狗平台获取数据
     * @param url url
     * @param token token
     * @param proId 项目id
     * @return JSONObject
     */
    @Post(url = "${url}", headers = {"Cookie: ssid=${token}"})
    JSONObject getDataForLaoGou(@Var("url") String url, @Var("token") String token, @Body("proId") Integer proId);
}
